FIT2-2025b 第07回 ミニプロサンプル解説 + 実習
アナウンス
今後の授業スケジュール
https://gyazo.com/480a4eb5d06dd07026b39c9aed22a1a5
概要設計書、詳細設計書は12月に順次解説します
今後の授業スタイルについて
変わらず「前半講義」「後半実習」スタイルが続きます
概要設計書の書き方、詳細設計書の書き方、中間発表の実施等
変わらず出席を取りますので悪しからず
本日の講義
「App」クラスという考え方
生成AIが頻繁に出力してくる一般的なアプローチです
本日のゴール
ミニプロに向けて、「クラス」を最低1つ完成させる
画面に登場する主要な要素 (プレイヤー、ボール等) を Classに定義する
update, draw関数を実装し、実際に画面上で動作するようにする
解説:Appクラスって?
※LLMの活用はOKですがVibe Codingの授業ではないのでプロンプト指南は特筆しません
PythonのレトロゲームエンジンPyxelを利用して簡単なflappy birdのようなゲームを生成して
https://gyazo.com/4ab3c66e22ef98648edd2038e44b651c
考え方:ゲーム全体を一つの抽象的な「クラス」と捉える
class App: でゲーム全体の「設計」を記す
def __init__(self) にはゲームの初期化処理を記述
pyxel.init()やpyxel.run() もゲームの起動処理として記述
self.score, self.balls のようにゲーム内の変数を記述 (=global不要に)
App() を実行することでゲームを起動する
code:python
import pyxel
# ゲームの設計
class App:
def __init__(self):
pyxel.init(200, 200)
pyxel.run(self.update, self.draw) # 後述のupdate, drawをこのように渡すことができる
def update(self):
for ball in self.balls:
ball.move()
def draw(self):
pyxel.cls(7)
for ball in self.balls:
ball.draw()
# ボールの設計
class Ball:
def __init__(self):
self.x = pyxel.rndi(0, 199)
self.y = 0
def move(self):
self.y = self.y + 1
def draw(self):
pyxel.circ(self.x, self.y, 10, 5)
App() # これにより Appの__init__が実行され、pyxelが初期化される